package Exer5;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/*
 *  现有一个Triangle（三角形）类
 *  服务器用于接收客户端传来的Triangle对象，计算三角形面积，将计算结果传给客户端。
 *  基本要求：使用Socket类和ServerSocket类实现单线程对象的发送与接收。
 *  实现计算结果的发送与接收。可以不使用界面。
 *  选做内容：
	实现多线程服务器和多线程客户端：
	服务器可以同时连接若干客户端；
	每个客户端接收字符串和发送Triangle对象是两个独立的线程。
 */

/**
 * 服务器类，用于接收客户端传来的Triangle对象，
 * 计算三角形面积，将计算结果传给客户端
 * @see #Client
 * @date 2019年11月20日 17:41:11
 */
public class Server {
	ServerSocket serverSocket = null;
	Socket socket = null;
	DataOutputStream out = null;
	DataInputStream in = null;
	
	public Server() {
		try {
			serverSocket = new ServerSocket(6660);
			socket = serverSocket.accept();
			out = new DataOutputStream(socket.getOutputStream());
			in = new DataInputStream(socket.getInputStream());
			
		} catch (IOException e) {
			// TODO: handle exception
			System.out.println("初始化失败: 端口被占用");
		}
	}
	
	public void Interact() {
		Triangle triangle = null;
		while(true) {
			try {
				double sideA = in.readDouble();
				double sideB = in.readDouble();
				double sideC = in.readDouble();
				triangle = new Triangle(sideA, sideB, sideC);
				
				double area = -1;
				if(triangle.isLeagal() == false) {
					out.writeDouble(area);
				}
				else{
					area =Double.parseDouble(triangle.caculateArea()); 
					out.writeDouble(area);
				}
			} catch (IOException e) {
				// TODO: handle exception
				e.printStackTrace();
				System.exit(0);		// 用户断开连接，结束程序
			}
		}
			
	}
	
	public static void main(String args[]) throws IOException {
		new Server().Interact();
	}
	
}